#ifndef DRIVERCONFIG_H
#define DRIVERCONFIG_H
#include <optional>
#include <string>
#include <cstdint>
#include <random>
#include <set>

namespace canpp {
    using std::string;
    using std::set;
    using std::optional;
    using std::nullopt;

    inline int random_number(const int min, const int max) {
        std::random_device rd;
        std::mt19937 gen(rd());
        std::uniform_int_distribution<> dist(min, max);
        return dist(gen);
    }

    struct CanDriverConfig {
        string canInterface;
        optional<string> id = nullopt;
        optional<set<uint16_t> > canMask = nullopt;
    };

    struct LoggingConfig {
        bool reaperLoggingToConsole = false;
        bool reaperLoggingToTextfile = true;
        bool readerLoggingToConsole = false;
        bool readerLoggingToTextfile = false;
        bool senderLoggingToConsole = false;
        bool senderLoggingToTextfile = false;
    };
}

#endif //DRIVERCONFIG_H
